package org.jeecg.modules.category.service;

import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.common.exception.AnswerOnlineException;
import org.jeecg.modules.category.entity.AoCategory;
import org.jeecg.modules.category.model.TreeSelectModel;

import java.util.List;
import java.util.Map;

/**
 * 题库分类
 *
 * @author thankgod7
 */
@SuppressWarnings("unused")
public interface IAoCategoryService extends IService<AoCategory> {

    /**
     * 根节点父ID的值
     */
    String ROOT_PID_VALUE = "0";

    /**
     * 添加题库分类
     *
     * @param aoCategory d
     */
    void addAoCategory(AoCategory aoCategory);

    /**
     * 编辑题库分类
     *
     * @param aoCategory d
     */
    void updateAoCategory(AoCategory aoCategory);

    /**
     * 根据父级编码加载分类字典的数据
     *
     * @param pcode 父节点编码
     * @return data
     * @throws AnswerOnlineException e
     */
    List<TreeSelectModel> queryListByCode(String pcode) throws AnswerOnlineException;

    /**
     * 根据pid查询子节点集合
     *
     * @param pid pid
     * @return data
     */
    List<TreeSelectModel> queryListByPid(String pid);

    /**
     * 根据pid查询子节点集合,支持查询条件
     *
     * @param pid       pid
     * @param condition condition
     * @return data
     */
    List<TreeSelectModel> queryListByPid(String pid, Map<String, String> condition);

    /**
     * 根据code查询id
     *
     * @param code code
     * @return data
     */
    String queryIdByCode(String code);

    /**
     * 删除节点时同时删除子节点及修改父级节点
     *
     * @param ids ids
     */
    void deleteAoCategory(String ids);

    /**
     * 分类字典控件数据回显[表单页面]
     *
     * @param ids ids
     * @return data
     */
    List<String> loadDictItem(String ids);


    /**
     * 分类字典控件数据回显[表单页面]
     *
     * @param ids          ids
     * @param returnColumn 返回字段
     * @param delNotExist  是否移除不存在的项，设为false如果某个key不存在数据库中，则直接返回key本身
     * @return data
     */
    List<String> loadDictItem(String ids, String returnColumn, boolean delNotExist);

    /**
     * 分类字典控件数据回显[表单页面]
     *
     * @param ids         ids
     * @param delNotExist 是否移除不存在的项，设为false如果某个key不存在数据库中，则直接返回key本身
     * @return data
     */
    List<String> loadDictItem(String ids, boolean delNotExist);

}
